package control;

import databasehandling.AnsatHandler;
import databasehandling.HandlerFactory;
import java.sql.SQLException;
import model.Ansat;
import utility.Adgangskodekryptering;


public class AnsatController {

    private static AnsatController instance;

    private Ansat aktivAnsat;
     
    
    public AnsatController() {
        aktivAnsat = null;
    }

    public static AnsatController getInstance() {
        if (instance == null) {
            instance = new AnsatController();
        }
        return instance;
    }

    public Ansat getAktivAnsat() {
        return aktivAnsat;
    }

    /**
     * Metoden tjekker om det kaldte password er det samme som det krypteret kodeord i databasen, i
     * så fald returneres true og det pågældende Ansat objekt bliver sat lig med aktivAnsat variablen.
     * 
     * @param brugernavn
     * @param password
     * @return
     * @throws SQLException 
     */
    public boolean login(String brugernavn, String password) throws SQLException {
        boolean succes = false;
        String kodeord = AnsatHandler.getKodeord(brugernavn);

        if (kodeord != null && password != null) {          
            if (Adgangskodekryptering.isTheSameMD5(kodeord, password)) {
                succes = true;
                aktivAnsat = HandlerFactory.getInstance().getAnsatHandler().getAnsat(brugernavn);
            }
        }
        return succes;
    }

    /**
     * Sætter aktivAnsat = null, bruges til at logge en bruger ud af systemet 
     */
    public void logOut() {
        aktivAnsat = null;
    }

}
